#ifndef HEARTBEAT_H
#define HEARTBEAT_H

#include <time.h>
#include <pthread.h>

// 心跳配置结构体
typedef struct HeartbeatConfig {
    int interval;          // 心跳间隔（秒）
    int timeout;           // 超时时间（秒）
    int enabled;           // 是否启用心跳
    pthread_t thread;      // 线程句柄心跳线程
    int stop;              // 停止标志
    int (*sendHeartbeat)(void *);  // 发送心跳函数
    void *context;         // 上下文
} HeartbeatConfig;

// 连接状态结构体
typedef struct {
    time_t lastHeartbeat;  // 最后一次收到心跳的时间
    int status;            // 连接状态：0-断开，1-连接
} ConnectionStatus;

// 心跳相关函数声明
HeartbeatConfig *heartbeatInit(int interval, int timeout, int (*sendFunc)(void *), void *context);
int heartbeatStart(HeartbeatConfig *config);
void heartbeatStop(HeartbeatConfig *config);
void heartbeatDestroy(HeartbeatConfig *config);

// 连接状态相关函数声明
ConnectionStatus *connectionStatusInit();
void connectionStatusUpdate(ConnectionStatus *status);
int connectionStatusCheckTimeout(ConnectionStatus *status, int timeout);
int connectionStatusGet(ConnectionStatus *status);
void connectionStatusDestroy(ConnectionStatus *status);

#endif // HEARTBEAT_H